package com.bingbing.back.service;

import com.bingbing.back.dto.CityLocDto;
import com.bingbing.back.dto.SchoolInfoDto;
import com.bingbing.back.po.SchoolInfo;
import com.github.pagehelper.PageInfo;

import java.util.List;

public interface SchoolInfoService {
    /**
     * 根据用户所在地区，将数据库按人气值排序后的高校进行重新排序
     * 将本地地区的学校推荐提前
     * @param dto 包含用户当前定位的省份和城市
     * @return 高校信息：名称和logo
     */
    List<SchoolInfo> recommendSchool(SchoolInfoDto dto);

    /**
     * 初始界面和搜索学校
     * @param pageNum 显示数据的页面
     * @param pageSize 每页数据条数
     * @param dto 可以包含多个城市
     * @return 用PageInfo封装搜索处理的学校信息，完成分页操作
     */
    PageInfo<SchoolInfoDto> searchSchool(int pageNum, int pageSize, SchoolInfoDto dto);

    /**
     * 按照学校id增加相应人气值
     * @param schoolId 学校id
     * @param val 增加人气值
     * @return
     */
    void addClout(int schoolId, int val);

    /**
     * 按照学校id显示学校页面所有信息
     * @param schoolId
     * @return
     */
    SchoolInfoDto showSchoolById(int schoolId);

    /**
     * 显示学校简介，按\n分割成字符串数组
     * @param schoolId
     * @return
     */
    List<String> searchIntroBySchoolId(int schoolId);

    /**
     * 按照该学校的最新分数，查询同年相近分数（-15，+10）的学校信息
     * @param schoolId
     * @return
     */
    List<SchoolInfoDto> getCloseScoreSchool(int schoolId);

    // 返回省份下的所有学校
    List<CityLocDto> findByProvince();
}
